package goose

import (
	"github.com/spf13/cobra"
)

type module struct {
	MultiModule *cobra.Command
}

func NewModule() *module {
	return &module{
		MultiModule: &cobra.Command{},
	}
}

// 添加应用模块。
func (x *module) AddModuleBuilder(module ...*ModuleBuilder) *module {
	for _, v2 := range module {
		x.MultiModule.AddCommand(v2.Build())
	}

	return x
}

// 启动应用。
func (x *module) Bootstrap() error {
	return x.MultiModule.Execute()
}
